Spring Boot JPA (Java Persistence API) কী?
Spring Boot JPA হলো একটি ফিচার যা আপনাকে Spring Boot অ্যাপ্লিকেশনে ডেটাবেস সংযুক্ত করতে সহজ করে দেয়। JPA একটি Java API যা অবজেক্ট-রিলেশনাল ম্যাপিং (ORM) সমর্থন করে, যার মাধ্যমে আপনি ডেটাবেসের টেবিলগুলির সাথে Java ক্লাসের সম্পর্ক স্থাপন করতে পারেন। Spring Boot JPA ডেভেলপারদের জন্য ডেটাবেস কনফিগারেশন এবং ডেটা অ্যাক্সেস সহজ করে দেয়।
এখানে একটি Hello World Example তৈরি করা হবে, যেখানে Spring Boot JPA ব্যবহার করে একটি User Entity তৈরি করা হবে এবং ডেটাবেসে ডেটা সঞ্চয় করা হবে।
Step 1: Spring Boot Project তৈরি করা
প্রথমেই, একটি Spring Boot প্রোজেক্ট তৈরি করতে হবে। আপনি Spring Initializr (https://start.spring.io/) ব্যবহার করে একটি নতুন প্রোজেক্ট তৈরি করতে পারেন। এই প্রোজেক্টে নিম্নলিখিত ডিপেনডেন্সি গুলি নির্বাচন করুন:
- Spring Web
- Spring Data JPA
- H2 Database (হালকা ডেটাবেস হিসেবে)
Spring Initializr থেকে প্রোজেক্ট ডাউনলোড করে আপনার প্রোজেক্টে আনুন।
Step 2: application.properties কনফিগারেশন
Spring Boot JPA ডেটাবেস সংযোগের জন্য কনফিগারেশন ফাইল src/main/resources/application.properties এ যোগ করুন:
# JPA settings
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
# Console for H2
spring.h2.console.enabled=true
এই কনফিগারেশন হালকা ডেটাবেস H2 ব্যবহার করবে এবং ডেটাবেস স্কিমা আপডেট করবে (spring.jpa.hibernate.ddl-auto=update), এটি আপনার User Entity ক্লাসের সাথে স্বয়ংক্রিয়ভাবে টেবিল তৈরি করবে।
Step 3: Entity Class তৈরি করা
এখন User নামক একটি Entity ক্লাস তৈরি করুন। এটি একটি User টেবিলের প্রতিনিধিত্ব করবে, যা ডেটাবেসে ডেটা সঞ্চয় করবে।
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String email;
// Constructor
public User(String name, String email) {
this.name = name;
this.email = email;
}
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
এখানে @Entity অ্যানোটেশন ব্যবহার করে User ক্লাসকে একটি JPA Entity হিসেবে ঘোষণা করা হয়েছে। @Id এবং @GeneratedValue ব্যবহার করা হয়েছে id ফিল্ডকে প্রাইমারি কী হিসেবে সেট করার জন্য।
Step 4: Repository Interface তৈরি করা
JPA রেপোজিটরি তৈরি করতে আমরা Spring Data JPA এর JpaRepository ইন্টারফেস ব্যবহার করব। এটি ডেটাবেস থেকে ডেটা অ্যাক্সেসের জন্য প্রয়োজনীয় মেথড সরবরাহ করবে।
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
// এখানে আমরা কাস্টম কুয়েরি মেথডও যোগ করতে পারি
}
UserRepository ইন্টারফেস JpaRepository থেকে এক্সটেন্ড করে যা ডেটাবেস অপারেশনগুলো সরাসরি হ্যান্ডেল করবে।
Step 5: Service Class তৈরি করা
ডেটাবেসের সাথে কাজ করার জন্য একটি Service ক্লাস তৈরি করুন। এখানে আমরা UserService নামক একটি ক্লাস তৈরি করব, যা UserRepository এর মাধ্যমে User ডেটা পরিচালনা করবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
// Save a new User
public void saveUser(String name, String email) {
User user = new User(name, email);
userRepository.save(user);
}
// Get all Users
public Iterable<User> getAllUsers() {
return userRepository.findAll();
}
}
এখানে saveUser মেথড নতুন User ডেটা সঞ্চয় করে এবং getAllUsers মেথড সব ব্যবহারকারীদের ফেরত দেয়।
Step 6: Controller Class তৈরি করা
এখন, আমরা একটি UserController ক্লাস তৈরি করব, যা HTTP রিকোয়েস্ট হ্যান্ডল করবে এবং Service ক্লাসের মেথড কল করবে।
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserService userService;
// Endpoint to save a user
@PostMapping("/addUser")
public String addUser(@RequestParam String name, @RequestParam String email) {
userService.saveUser(name, email);
return "User added successfully!";
}
// Endpoint to get all users
@GetMapping("/getAllUsers")
public Iterable<User> getAllUsers() {
return userService.getAllUsers();
}
}
এখানে:
/addUserএPOSTরিকোয়েস্টে নাম এবং ইমেইল প্যারামিটার দিয়ে নতুনUserসঞ্চয় করা হবে।/getAllUsersএGETরিকোয়েস্টে সবUserফিরিয়ে দেওয়া হবে।
Step 7: Spring Boot Application চালানো
এখন আমরা @SpringBootApplication অ্যানোটেশন ব্যবহার করে আমাদের প্রধান অ্যাপ্লিকেশন ক্লাস তৈরি করব এবং অ্যাপ্লিকেশন চালাবো।
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootJPAApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootJPAApplication.class, args);
}
}
এই ক্লাসটি Spring Boot অ্যাপ্লিকেশন শুরু করবে। @SpringBootApplication অ্যানোটেশন ব্যবহার করলে এটি স্বয়ংক্রিয়ভাবে কনফিগারেশন, কম্পোনেন্ট স্ক্যান এবং অটোমেটিক Spring Boot স্টার্টআপ প্রক্রিয়া শুরু করবে।
Step 8: অ্যাপ্লিকেশন চালানো
এখন আপনি SpringBootJPAApplication ক্লাসটি রান করলে, অ্যাপ্লিকেশনটি চালু হবে। আপনি যেকোনো HTTP ক্লায়েন্ট (যেমন Postman) বা ব্রাউজার দিয়ে POST এবং GET রিকোয়েস্ট পাঠিয়ে ডেটা ইনসার্ট এবং রিট্রিভ করতে পারবেন।
Add User Example:
POST http://localhost:8080/addUser?name=JohnDoe&email=johndoe@example.com
Get All Users Example:
GET http://localhost:8080/getAllUsers
সারাংশ
এটি ছিল একটি Spring Boot JPA Hello World Example। এখানে:
- JPA Entity (
User) তৈরি করা হয়েছে। - Spring Data JPA ব্যবহার করে
JpaRepositoryইনটিগ্রেট করা হয়েছে। UserServiceএবংUserControllerক্লাস ব্যবহার করে ডেটাবেসে ডেটা সঞ্চয় ও রিট্রিভ করা হয়েছে।
Spring Boot JPA ব্যবহার করে ডেটাবেস ম্যানেজমেন্ট সহজ এবং কার্যকরী হয়ে ওঠে। আপনার অ্যাপ্লিকেশনের জন্য দ্রুত ডেটাবেস অপারেশন এবং CRUD (Create, Read, Update, Delete) ফিচার যোগ করা সম্ভব হয়।
Read more